package cn.sxt.common.userscenter.util;

import java.io.File;
import java.io.InputStream;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;
/**
 * 正则表达式的工具类
 * @author Administrator
 *
 */
@Component("regexUtil")
public class RegexUtil {
	@Resource
	private FileUtil fileUtil;
	/* 正则表达式 */
	private String patt = "(\\$\\{)(\\w+)(\\})";
	/**
	 * 解析字符串
	 * @param souStr
	 * @param paramMap
	 * @return
	 */
	public String replaceStr(String souStr,Map<String, Object> paramMap){
		ConstantFinalUtil.LOGGER.info("---souStr:{}---",souStr);
		/* 编译正则表达式 */
		Pattern pattern = Pattern.compile(patt);
		/* 获取匹配器 */
		Matcher matcher = pattern.matcher(souStr);
		StringBuffer sb = new StringBuffer();
		/* 循环匹配 */
		while(matcher.find()){
			/* 正则表达式匹配结果去第二组 */
			String res = matcher.group(2);
			/* 如果map中包含键,就将键对应的值替换 */
			if(paramMap.containsKey(res)){
				matcher.appendReplacement(sb, paramMap.get(res)+"");
			}
		}
		/* 夹尾巴 */
		matcher.appendTail(sb);
		return sb.toString();
	}
	/**
	 * 读取文件的内容 将文件￥${}中的内容替换为map中的
	 * @param fileName
	 * @param paramMap
	 * @return
	 */
	public String replaceFile(String fileName,Map<String, Object> paramMap){
		/* 读取fileName文件对应的文件内容 */
		InputStream is = ConstantFinalUtil.class.getClassLoader().getResourceAsStream(fileName);
		String fileContent = this.fileUtil.readFile(is);
		return this.replaceStr(fileContent, paramMap);
	}
}
